/**
 * @description 使用函数将数组的值映射到对象。
 * @param {*} arr 
 * @param {*} fn 
 * @returns 
 */
const mapObject = (arr, fn) =>
  // 使用 Array.prototype.reduce() 对每个元素适用于 fn 函数结果
  arr.reduce((acc, el, i) => {
    // 使用 el 为 key 以 fn 结果作为值。
    acc[el] = fn(el, i, arr);
    return acc;
  }, {});

// 例子
mapObject([1, 2, 3], a => a * a); // { 1: 1, 2: 4, 3: 9 }
